Projekt Pronal Projekt Pronal

Kazalo:
Sofinasiranje projekta
Starejši - učbenik...
Starejši - zbirka nalog...
Tekmovanja - dopolni...
Tekmovanja - Parsons...
Tekmovanja - popravi...
Tekmovanja
rtk 1988
rtk 1996
rtk 1998
rtk 1999
rtk 2000
rtk 2001
rtk 2002
rtk 2004
rtk 2006
rtk 2007
rtk 2008
rtk 2009
rtk 2011
rtk 2013
rtk 2014
rtk 2016
rtk 2017
rtk 2018
rtk2010
rtk 1988

rtk 1988


1988.1.2

1. podnaloga

Naloga

Napiši program, ki prebere vrstico z nekaj besedami, ki so ločene z enim ali več presledki, in besede izpiše v obratnem vrstnem redu.

Vhodni podatki

Vrstica z besedilom, ki vsebuje besede ločene z vsaj enim presledkom.

Izhodni podatki

Izpiši eno samo vrstico z obrnjenim vrstnim redom besed.

Primer

Vhod
>>> 'Kako zanimiv    primer!  '
Izhod
'primer! zanimiv Kako'

Uradna rešitev

besede = input('').split()
besede.reverse()
print(" ".join(besede))

1988.2.2

1. podnaloga

Uporabniki nekega programa so se pritožili, da so ukazne besede predolge. Zato želimo vpeljati možnost okrajševanja ukazov. Ukaz dodaj naj bi bilo na primer mogoče okrajšati na dod, doda ali dodaj; ne pa na do (prekratka okrajšava) ali dodamo (napačni znaki v nizu). Okrajšavo opišemo tako, da z zvezdico v modelu ukazne besede označimo, do kam sega obvezni del ukaza; v našem primeru dod*aj. Okrajšan ukaz mora biti dolg najmanj en znak(v modelu ukazne besede zvezdica nikoli ne stoji na prvem mestu).

Naloga

Napiši program, ki ugotovi, ali nek niz ustreza na zgornji način podanemu modelu ukazne besede. Glede na to naj potem program izpiše True ali False. Model ukazne besede in preverjalni niz sta v ustreznih tabelah znakov in zaključuje vsaj en presledek.

Vhodni podatki

V prvi vrstici je model ukazne besede, ki se konča z vsaj enim presledkom. V drugi vrstici je preverjalni niz, ki se zaključi z vsaj enim presledkom.

Izhodni podatki

Izpiši True, če prverjalni niz ustreza modelu ukazne besede in False, če ne.

Primer

Vhod
>>> 'abc*de  '
>>> 'abcd '
Izhod
'True'

Uradna rešitev

model = input('')
preverjalni = input('')
seUjema = True
cezZvezdico = False
zamik = 0 #zvezdico bomo preskočili
i = 0
while seUjema:
    iModel = model[i + zamik]
    iPreverjalni = preverjalni[i]
    if iModel == '*':
        zamik = 1
        iModel = model[i + zamik]
        cezZvezdico = True
    if iPreverjalni == ' ':
        break
    elif iModel != iPreverjalni:
        seUjema = False
    i += 1
print(seUjema and cezZvezdico)

1988.3.2

1. podnaloga

Naloga (Napiši program)

Napiši program, ki prešteje, kolikokrat se v nekem nizu znakov pojavi nek drug podniz. Pri tem ni nujno, da znaki drugega niza v prvem stoje zaporedoma, ujemati se mora le vrstni red.

Vhodni podatki

Ena vrstica v kateri sta dana niza ločena s presledkom. Prvi je niz v katerem iščemo, drugi pa je podniz, ki ga iščemo v prvem nizu.

Izhodni podatki

Izpiši eno samo število -- število pojavitev podniza v nizu.

Primer

Vhod
>>> 'matematika mati'
Izhod
4
Komentar

Mogoče boš moral uporabiti rekurzijo.

Uradna rešitev

def isciPodniz (niz, podniz):
    '''funkcija poišče kolikokrat se podniz pojavi v nizu'''
    stPojavitev = 0
    if podniz == '':
        stPojavitev += 1
        return 1
    if niz == '':
        return stPojavitev
    delniPodniz = podniz[0]
    for indeks in range(len(niz)):
        if niz[indeks] == delniPodniz:
            stPojavitev += isciPodniz(niz[indeks + 1:], podniz[1:])
    return stPojavitev


vhodni = input('').split()
niz = vhodni[0]
podniz = vhodni[1]
print(isciPodniz(niz, podniz))
Mesto objave ob koncu projekta 15.9.2018